
/**
 * @brief    Cross-power spectral density and cross-correlation function output.
 *
 * @version  0.1
 * @author   wuxingchuang
 * @date     2025.10.29
 *          _
 *      ___| |__   ___ _ __   __ _  ___  _ __   __ _
 *     / __| '_ \ / _ \ '_ \ / _` |/ _ \| '_ \ / _` |
 *     \__ \ | | |  __/ | | | (_| | (_) | | | | (_| |
 *     |___/_| |_|\___|_| |_|\__, |\___/|_| |_|\__, |
 *                           |___/             |___/
 * @copyright (c) 2024 by 神工仿真, All Rights Reserved.
 */
#pragma once
#include "DataStructure/Common/Id.h"
#include "DataStructure/Common/Real.h"
#include "DataStructure/Common/SetBase.h"
#include "DataStructure/Input/Solver/DOFDirections.h"
SG_DATASTRUCTURE_FEM_NAMESPACE_OPEN

struct RCROSSData : public SetBase 
{
    // 获取激励方向
    DOFDirections GetCompDirection1 () const;
    DOFDirections GetCompDirection2 () const;

    SG::DataStructure::Common::I64 m_RTYPE1 =
        0;                                       ///< Number of time lag intervals
    SG::DataStructure::Common::Id m_ID1 = 0;     ///< Element/Grid id
    SG::DataStructure::Common::I64 m_COMP1 = 0;  ///< Component number
    SG::DataStructure::Common::I64 m_RTYPE2 =
        0;                                       ///< Number of time lag intervals
    SG::DataStructure::Common::Id m_ID2 = 0;     ///< Element/Grid id
    SG::DataStructure::Common::I64 m_COMP2 = 0;  ///< Component number
    SG::DataStructure::Common::Id m_BURID = 0;   ///< Curve ID
    SG::DataStructure::Common::Id m_domainId = 0;  ///<
};

inline DOFDirections RCROSSData::GetCompDirection1 () const
{
    return GetOneDirection (m_COMP1);
}
inline DOFDirections RCROSSData::GetCompDirection2 () const
{
    return GetOneDirection (m_COMP2);
}

///< @brief 判断数据是否相等
DECLSPEC bool operator==(const RCROSSData& val1, const RCROSSData& val2);

SG_DATASTRUCTURE_FEM_NAMESPACE_CLOSE
